//
//  WelcomeViewController.swift
//  SinaWeiBo
//
//  Created by tuyue on 16/3/10.
//  Copyright © 2016年 xueyang.co.ltd. All rights reserved.

/**
iconImageView的动画弹出效果

- parameter <Tduration:             动画持续时间
- parameter delay:                  动画延时
- parameter usingSpringWithDamping: 弹力系数
- parameter initialSpringVelocity:  加速度
- parameter options:                动画可选项（位移枚举）
- parameter animations:             执行动画时所要做的（改变frame）
- parameter completion:             动画完成后回调

- returns: 返回内容
*/
//        UIView.animateWithDuration(<#T##duration: NSTimeInterval##NSTimeInterval#>, delay: <#T##NSTimeInterval#>, usingSpringWithDamping: <#T##CGFloat#>, initialSpringVelocity: <#T##CGFloat#>, options: <#T##UIViewAnimationOptions#>, animations: <#T##() -> Void#>, completion: <#T##((Bool) -> Void)?##((Bool) -> Void)?##(Bool) -> Void#>)
//

/*
自动布局的页面在执行动画效果时需要注意
1.需要在viewdidAppear方法中执行动画的效果的代码
2.在自动布局的页面 不能够直接修改frame 来改变视图的位置  -> 自动布局的页面视图是有 frame的
2.1.自动布局的页面的子视图的frame 是在 viewDidlayoutSubViews 方法中 确定的视图的frame
3.自动布局系统的会在 viewWillLayoutSubViews生命周期方法之前 '收集' 约束
4.如果希望更新的约束能够提前展示动画效果的运动轨迹,需要在更新完约束之后 强制刷新动画,提前布局页面
5.必须将 提前刷新的方法 放在动画闭包中执行

*/

import UIKit
import SnapKit
import SDWebImage

class WelcomeViewController: UIViewController {
    
    
    /**将View换成backImageView*/
    override func loadView() {
        view = backImageView
    }
    
//    override func viewWillLayoutSubviews() {
//     iconImageView.snp_makeConstraints { (make) -> Void in
//        make.width.equalTo(90)
//        make.height.equalTo(90)
//        }
//    }
    
    /**添加到viewDidLoad，该方法中不能添加欢迎页面的动画*/
    override func viewDidLoad() {
        super.viewDidLoad()
        setupUI()
    }
    
    /**在即将完成显示的这个方法中添加动画*/
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        startAnimation()
    }
    
    /**iconImageView的动画设置*/
    func startAnimation(){
        
        /**该方法中只是手机约束，并未改变，必须在LayoutSubView的方法中才能改变子控件的frame*/
        let offsetY = -UIScreen.mainScreen().bounds.height + 180
        
        self.iconImageView.snp_updateConstraints(closure: { (make) -> Void in
      
            make.bottom.equalTo(self.view.snp_bottom).offset(offsetY)
//            make.centerX.equalTo(self.view.snp_centerX)
            
            
        })
        

        UIView.animateWithDuration(1.5, delay: 0, usingSpringWithDamping: 0.98, initialSpringVelocity: 9.8, options: [], animations: { () -> Void in
            /**该闭包中的代码代表动画完成后的回调，强制刷新的方法必须在动画的闭包中执行*/
             self.view.layoutIfNeeded()
            }) { (_) -> Void in
             UIView.animateWithDuration(0.5, animations: { () -> Void in
                /**设置欢迎label的alpha的值变为1的动画*/
                self.welcomeLabel.alpha = 1
                }, completion: { (_) -> Void in
//                    UIApplication.sharedApplication().keyWindow?.rootViewController = MainViewController()
                    NSNotificationCenter.defaultCenter().postNotificationName(SwitchRootViewController, object: nil)
             })
        }
    }
    
    
    /**将空间添加到当前的view，并设置控件的约束*/
    func setupUI(){
        view.addSubview(iconImageView)
        view.addSubview(welcomeLabel)
        
        
        /**iconImageView设置约束,设置iconImageView的大小*/
        iconImageView.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(self.view.snp_centerX)
            make.bottom.equalTo(self.view.snp_bottom).offset(-180)
            make.width.equalTo(90)
            make.height.equalTo(90)
        }
       
        /** welcomeLabel设置约束*/
        welcomeLabel.snp_makeConstraints { (make) -> Void in
            make.top.equalTo(iconImageView.snp_bottom).offset(16)
            make.centerX.equalTo(self.view.snp_centerX)
        }
        welcomeLabel.alpha = 0
        
        /**设置图片*/
        iconImageView.sd_setImageWithURL(UserAccount.sharedAccount.headImageURL)
        
//        设置layer的相关属性
        iconImageView.layer.cornerRadius = 45
        iconImageView.layer.masksToBounds = true
        iconImageView.layer.borderWidth = 1
        iconImageView.layer.borderColor = themeColor.CGColor
    }
    
    /**懒加载创建子控件*/
     // 1，背景图片
    private lazy var backImageView = UIImageView(image: UIImage(named: "ad_background"))
    // 2，头像图片
    private lazy var iconImageView = UIImageView(image: UIImage(named: "avatar_default_big"))
    // 3，欢迎label
    private lazy var welcomeLabel:UILabel = UILabel.labelWith((UserAccount.sharedAccount.name ?? "")+"  欢迎归来", fontSize: 16, textColor: UIColor.darkGrayColor())
    

}
